package com.zkh.myutils.database.data.handler;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.zkh.myutils.database.data.DBOperateUtils;

/**
 *  处理数据方式，将数据转为实体后返回，多条数据只返回第一条。适用于单行多列。
 * @author zkh
 */
public class BeanHandler<T> implements Handler<T> {
	
	//类型
	private final Class<? extends T> type;
	
	/**
	 * 构造方法
	 */
	public BeanHandler(Class<? extends T> cls){
		type = cls;
	}

	/**
	 * 处理数据的具体方法
	 */
	public T handle(ResultSet rs) throws SQLException {
		//结果集
		List<T> resList = new ArrayList<>();
		//查询并转换
		DBOperateUtils.mapListRender(rs, resList, type, false);
		//第一条数据转实体
		return resList.isEmpty() ? null : resList.get(0);
	}
	
}
